package in.rob.client.page;
import in.lib.Constants;
import in.lib.annotation.InjectView;
import in.lib.annotation.OnClick;
import in.lib.handler.streams.UserFriendsResponseHandler;
import in.lib.helper.ResponseHelper;
import in.lib.helper.ThemeHelper;
import in.lib.manager.APIManager;
import in.lib.utils.Views;
import in.model.User;
import in.rob.client.ProfileActivity;
import in.rob.client.R;
import in.rob.client.page.base.UserStreamFragment;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
/**
* TODO: Add cache loading in loadUserList
*/
public class UserFriendsPage extends UserStreamFragment implements OnClickListener
{
public static enum Mode
{
FOLLOWING("following"),
FOLLOWERS("followers");
private final String mModeText;
private Mode(String modeText)
{
this.mModeText = modeText;
}
public String getModeText()
{
return mModeText;
}
}
private Mode mMode = Mode.FOLLOWERS;
private User mUser;
// views
@OnClick @InjectView(R.id.followers_button) public View mFollowersBtn;
@OnClick @InjectView(R.id.following_button) public View mFollowingBtn;
@OnClick @InjectView(R.id.mode_switch) public ImageView mModeSwitch;
@InjectView(R.id.followers_text) public TextView mFollowersTextTv;
@InjectView(R.id.following_text) public TextView mFollowingTextTv;
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.split_timeline_view, container, false);
Views.inject(this, v);
return v;
}
@Override public void retrieveArguments(Bundle arguments)
{
super.retrieveArguments(arguments);
if (arguments != null)
{
if (arguments.containsKey(Constants.EXTRA_USER))
{
mUser = (User)arguments.getParcelable(Constants.EXTRA_USER);
}
else if (arguments.containsKey(Constants.EXTRA_USER_ID))
{
mUser = User.loadUser(arguments.getString(Constants.EXTRA_USER_ID));
if (mUser == null)
{
mUser = new User();
mUser.setId(getArguments().getString(Constants.EXTRA_USER_ID));
}
}
}
}
@Override public void fetchStream(String lastId, boolean append)
{
UserFriendsResponseHandler response = new UserFriendsResponseHandler(getApplicationContext(), append);
ResponseHelper.getInstance().addResponse(getResponseKeys()[0], response, this);
if (mMode == Mode.FOLLOWERS)
{
response.setFailMessage(getString(R.string.followers_stream_fail));
APIManager.getInstance().getUserFollowers(mUser.getId(), lastId, response);
}
else
{
response.setFailMessage(getString(R.string.followings_stream_fail));
APIManager.getInstance().getUserFollowing(mUser.getId(), lastId, response);
}
}
@Override public void removeLoadMoreView()
{
getLoadMoreView().setVisibility(View.GONE);
}
@Override public void onClick(View v)
{
if (v.getId() == R.id.mode_switch)
{
if (mMode == Mode.FOLLOWERS)
{
v = mFollowingBtn;
}
else
{
v = mFollowersBtn;
}
}
int selectedColor = ThemeHelper.getColorResource(getContext(), R.attr.rbn_post_link_color);
int deselectedColor = ThemeHelper.getColorResource(getContext(), R.attr.rbn_sub_title);
if (v.getId() == R.id.followers_button && mMode != Mode.FOLLOWERS)
{
if ((getContext().getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE &&
(getContext().getResources().getConfiguration().orientation & Configuration.ORIENTATION_LANDSCAPE) == Configuration.ORIENTATION_LANDSCAPE
)
{
((ProfileActivity)getActivity()).setTitle2(getString(R.string.followers));
}
else
{
getActivity().setTitle(getString(R.string.followers));
}
mMode = Mode.FOLLOWERS;
mFollowersTextTv.setTextColor(selectedColor);
mFollowingTextTv.setTextColor(deselectedColor);
mModeSwitch.setImageResource(R.drawable.switch_left);
}
else if (v.getId() == R.id.following_button && mMode != Mode.FOLLOWING)
{
if ((getContext().getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE &&
(getContext().getResources().getConfiguration().orientation & Configuration.ORIENTATION_LANDSCAPE) == Configuration.ORIENTATION_LANDSCAPE
)
{
((ProfileActivity)getActivity()).setTitle2(getString(R.string.following));
}
else
{
getActivity().setTitle(getString(R.string.following));
}
mMode = Mode.FOLLOWING;
mFollowingTextTv.setTextColor(selectedColor);
mFollowersTextTv.setTextColor(deselectedColor);
mModeSwitch.setImageResource(R.drawable.switch_right);
}
showProgressLoader();
getLoadMoreView().setVisibility(View.VISIBLE);
getAdapter().clear();
getAdapter().notifyDataSetChanged();
initData();
}
@Override public String getCacheFileName()
{
return String.format(Constants.CACHE_USER_LIST_NAME, mMode.getModeText(), mUser.getId());
}
@Override public String[] getResponseKeys()
{
return new String[]{String.format(Constants.RESPONSE_FRIENDS, mUser.getId())};
}
}